import js from '@eslint/js';
import globals from 'globals';
import reactPlugin from 'eslint-plugin-react';

export default [
  js.configs.recommended,
  {
    files: ['**/*.{js,jsx}'],
    languageOptions: {
      ecmaVersion: 2022,
      sourceType: 'module',
      globals: {
        ...globals.browser,
        ...globals.es2022,
      },
      parserOptions: {
        ecmaFeatures: {
          jsx: true,
        },
      },
    },
    plugins: {
      react: reactPlugin,
    },
    rules: {
      // React 规则
      'react/react-in-jsx-scope': 'off', // React 17+ 不需要导入 React
      'react/prop-types': 'off', // 不强制要求 PropTypes
      'react/jsx-uses-react': 'off', // React 17+ 不需要
      'react/jsx-uses-vars': 'error', // 检查 JSX 中使用的变量
      'react/jsx-key': 'error', // 要求 JSX 元素有 key
      'react/no-unknown-property': 'error', // 禁止未知属性
      'react/no-unescaped-entities': 'warn', // 警告未转义的实体
      
      // 通用 JavaScript 规则
      'no-unused-vars': ['error', { argsIgnorePattern: '^_' }], // 未使用的变量
      'no-console': 'warn', // 警告 console 使用
      'no-debugger': 'error', // 禁止 debugger
      'prefer-const': 'error', // 优先使用 const
      'no-var': 'error', // 禁止 var
      'eqeqeq': ['error', 'always'], // 要求使用 ===
      'curly': ['error', 'all'], // 要求使用大括号
    },
    settings: {
      react: {
        version: 'detect', // 自动检测 React 版本
      },
    },
  },
  {
    files: ['**/*.test.{js,jsx}', '**/*.spec.{js,jsx}'],
    rules: {
      'no-unused-vars': 'off', // 测试文件允许未使用的变量
      'no-console': 'off', // 测试文件允许 console
    },
  },
  {
    ignores: [
      'dist/**',
      'build/**',
      'node_modules/**',
      '*.config.js',
      'webpack.*.js',
      '**/monitor_sdk/**/*.js',// 暂时不启用监控sdk，不检测
    ],
  },
];